package com.cskaoyan.javase.oop1._11static._4exercise.upgrade;
/**
 * 测试类加载和创建对象,理解类加载的详细流程
 * 一个类的加载和卸载,大体上分为五个步骤:
 *      加载-->链接-->初始化-->使用-->卸载
 * 其中加载-->链接-->初始化是类加载进行的步骤
 * 加载: 主要是将二进制数据读取进方法区
 * 链接:主要做
 *      1.验证二进制的数据是否合法
 *      2.完成静态成员变量的开辟空间和默认初始化
 * 初始化:
 *      主要是完成和static相关声明的代码
 *      比如静态成员变量的显式赋值
 *      静态代码块的执行
 *
 * 类加载过程中,实际上只要经过了加载和链接,就能够创建这个类的对象
 * 要想完成一个类的初始化,必须先进行加载和链接
 * 要想对一个进行初始化,这就是我们之前讲的类加载的时机:
 *      1.new对象
 *      2.访问静态成员(变量和方法)
 *      3.main方法
 *
 * @since 11:25
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        System.out.println(A.aInstance);
    }
}
class A{
    static A aInstance = new A();
}
